package com.cmall.common.foundation.util;

import java.math.BigDecimal;
import java.util.Random;
import java.util.regex.Pattern;

import org.apache.commons.lang3.StringUtils;

/**
 * 字符串工具类
 */
public class StringUtil {

	/**
	 * 校验可变字符串数组是否为空
	 * 
	 * @param parames
	 *            可变字符串数组
	 * @return 返回是否为空,true为空
	 */
	public static boolean isEmpty(String... parames) {
		for (String s : parames) {
			if (StringUtils.isBlank(s))
				return true;
		}
		return false;
	}
	
	/**
	 * 给BigDecimal小数后补零，补足dot位,小数位数大于或等于dot则不做处理
	 * @param soure	需要补足的数值
	 * @param dot	需要补到的小数位数
	 * @return String
	 */
	public static String addDotWithZero(BigDecimal soure,int dot){
		
		String add=String.valueOf(soure);
		
		//小数位数大于或等于dot则不做处理
		if(add.substring(add.indexOf(".")+1).length()>=dot){
			return add;
		}
		
		//正数需要先加点
		if(add.indexOf(".")<0&&dot>0){
			add=add+".";
		}
		//获得小数长度
		int con=dot-add.substring(add.indexOf(".")+1).length();

		if(con>0){
			for(int i=0;i<con;i++){
				add=add+"0";
			}
		}
		return add;
	}
	
	/**
     * 得到由字母和数字组成的随机字符 区分大小写
     * @return
     */
    public static char[] getChar(){
        char[] charLit = new char[62];
        char fword = 'A';
        char mword = 'a';
        char bword = '0';
        for (int i = 0; i < 62; i++) {
            if (i < 26) {
            	charLit[i] = fword;
                fword++;
            }else if(i<52){
            	charLit[i] = mword;
                mword++;
            }else{
            	charLit[i] = bword;
                bword++;
            } 
        }
     return charLit;
    }
     
    /**
     * 得到由字母和数字组成的随机字符串 区分大小写
     * @param length 字符串长度
     * @return
     */
    public static String getRandomData(int length){
    	String result="";
    	char[] r = getChar();
        Random rr = new Random();
        for(int i=0;i<length;i++){
            int num = rr.nextInt(62);
            result=result+r[num];
        }
        
        return result;
    }

    /**
     *
     * 功能描述: 
     *
	 * 断是否为整数
	 * @param str 传入的字符串
	 * @return 是整数返回true,否则返回false
	 * @auther: lixin
     * @date:  14:10
     */
	public static boolean isInteger(String str) {
		Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
		return pattern.matcher(str).matches();
	}
}
